ক্লোজার (Clojure) একটি ফাংশনাল প্রোগ্রামিং ভাষা, যা বিভিন্ন ধরনের ডেটা কাঠামো সরবরাহ করে যেমন List
, Vector
, Set
, এবং Map
। প্রতিটি ডেটা কাঠামো নির্দিষ্ট পরিস্থিতিতে ব্যবহৃত হয় এবং তাদের নিজস্ব সুবিধা রয়েছে। নিচে প্রতিটি ডেটা কাঠামো এবং তাদের ব্যবহার সম্পর্কিত বিস্তারিত আলোচনা করা হলো।
List
একটি সংযুক্ত ডেটা কাঠামো যা এলিমেন্টগুলোকে একটি নির্দিষ্ট ক্রমে সংরক্ষণ করে। এটি সাধারণত সিকোয়েন্স ডেটা হিসেবে ব্যবহৃত হয় এবং সাধারণত ফাংশনাল প্রোগ্রামিংয়ে রিকার্সন বা ফাংশনাল অ্যাক্টিভেশন চেইন করার জন্য ব্যবহার করা হয়।
(def my-list '(1 2 3 4 5))
; লিস্ট থেকে প্রথম আইটেম পেতে
(first my-list) ; আউটপুট: 1
; লিস্ট থেকে বাকি আইটেম পেতে
(rest my-list) ; আউটপুট: (2 3 4 5)
; নতুন আইটেম যোগ করতে
(cons 0 my-list) ; আউটপুট: (0 1 2 3 4 5)
Vector
একটি ইমিউটেবল, ইন্ডেক্সড ডেটা কাঠামো যা দ্রুত অ্যাক্সেসের জন্য উপযোগী। এটি ইন্ডেক্সের মাধ্যমে দ্রুত ডেটা অ্যাক্সেস এবং সংশোধনের সুবিধা দেয়। Vector
সাধারণত এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে দ্রুত অ্যাক্সেসের প্রয়োজন।
(def my-vector [1 2 3 4 5])
; ভেক্টর থেকে দ্বিতীয় আইটেম পেতে
(nth my-vector 1) ; আউটপুট: 2
; ভেক্টরের শেষে একটি আইটেম যোগ করতে
(conj my-vector 6) ; আউটপুট: [1 2 3 4 5 6]
; ভেক্টরের দৈর্ঘ্য পেতে
(count my-vector) ; আউটপুট: 5
Set
একটি ডেটা কাঠামো যা শুধুমাত্র অনন্য (unique) মান সংরক্ষণ করে, অর্থাৎ, এতে ডুপ্লিকেট আইটেম থাকতে পারে না। এটি সাধারণত ডেটার মেম্বারশিপ যাচাই এবং ইউনিক মান নিশ্চিত করার জন্য ব্যবহৃত হয়।
(def my-set #{1 2 3 4 5})
; সেটে একটি মান আছে কিনা চেক করা
(contains? my-set 3) ; আউটপুট: true
; নতুন আইটেম যোগ করতে
(conj my-set 6) ; আউটপুট: #{1 2 3 4 5 6}
; একটি আইটেম বাদ দিতে
(disj my-set 2) ; আউটপুট: #{1 3 4 5}
Map
একটি কী-ভ্যালু পেয়ার ডেটা কাঠামো, যেখানে প্রতিটি কী (key) একটি মান (value) নির্দেশ করে। এটি সাধারণত অ্যাসোসিয়েটিভ ডেটা মডেল এবং দ্রুত অনুসন্ধান করার জন্য ব্যবহৃত হয়।
Map
সাধারণত ডেটার অ্যাসোসিয়েটিভ ভ্যালু স্টোরেজে ব্যবহৃত হয়, যেমন ব্যবহারকারীর তথ্য সংরক্ষণ করা (ইমেইল-কী, নাম-ভ্যালু পেয়ার)।Map
খুব দ্রুত নির্দিষ্ট কী এর মান খুঁজে বের করতে সাহায্য করে।(def my-map {:name "Alice" :age 30 :city "New York"})
; একটি কী এর মান পেতে
(:name my-map) ; আউটপুট: "Alice"
; নতুন কী-ভ্যালু পেয়ার যোগ করতে
(assoc my-map :country "USA") ; আউটপুট: {:name "Alice", :age 30, :city "New York", :country "USA"}
; একটি কী-ভ্যালু পেয়ার বাদ দিতে
(dissoc my-map :city) ; আউটপুট: {:name "Alice", :age 30}
ডেটা কাঠামো | বৈশিষ্ট্য | ব্যবহার |
---|---|---|
List | সংযুক্ত, অর্ডারড ডেটা | রিকার্সন, ফাংশনাল প্রোগ্রামিং |
Vector | ইমিউটেবল, ইন্ডেক্সড ডেটা | দ্রুত অ্যাক্সেস, সংশোধন |
Set | অনন্য মান | ডুপ্লিকেট অপসারণ, মেম্বারশিপ যাচাই |
Map | কী-ভ্যালু পেয়ার, অ্যাসোসিয়েটিভ ডেটা | দ্রুত অনুসন্ধান, অ্যাসোসিয়েটিভ ডেটা |
এই ডেটা কাঠামোগুলো ক্লোজার প্রোগ্রামিংয়ে ডেটা ম্যানিপুলেশন, সংরক্ষণ এবং অ্যাক্সেস করার জন্য অত্যন্ত কার্যকরী এবং ফাংশনাল প্রোগ্রামিংয়ের জন্য উপযুক্ত।
common.read_more